package com.smedi.ismedi.progress.core.application.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.smedi.ismedi.progress.core.application.command.*;
import com.smedi.ismedi.progress.core.domain.aggregatemodel.EngineeringWeekMonthReport;
import org.springframework.http.ResponseEntity;

import java.io.IOException;

/**
 * 进度管理应用服务接口
 *
 * @author pengyan
 * @date 2022/09/19
 */
public interface EngineeringReportApplicationService {

    /**
    * 工程周月报列表pc 查询
    * @param engineeringReportQuery
    * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.smedi.ismedi.progress.core.domain.aggregatemodel.EngineeringWeekMonthReport>
    * @date 2022/11/24 14:32
    */
    Page<EngineeringWeekMonthReport> getEngineeringReportListPC(EngineeringReportQuery engineeringReportQuery);

    /**
     * 工程周月报列表啊app 查询
     * @param engineeringReportQuery
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.smedi.ismedi.progress.core.domain.aggregatemodel.EngineeringWeekMonthReport>
     * @date 2022/11/24 14:32
     */
    Page<EngineeringWeekMonthReport> getEngineeringReportListAPP(EngineeringReportQuery engineeringReportQuery);

    /**
     * 主体院审批
     * @return
     * @param progressReviewProjectRequest
     */
    Boolean reviewEngineeringReportOrganization(ProgressReviewProjectCommand progressReviewProjectRequest);

    /**
     * epc项目经理审批
     * @param progressReviewProjectRequest
     * @return
     */
    Boolean reviewEngineeringReportEPCManager(ProgressReviewProjectCommand progressReviewProjectRequest);

    /**
    *  工程周月报的导出
    * @param engineeringReportDetailQuery
    * @return org.springframework.http.ResponseEntity<byte[]>
    * @date 2022/11/28 11:26
    */
    ResponseEntity<byte[]> engineeringReportExport(EngineeringReportDetailQuery engineeringReportDetailQuery) throws IOException;

    /**
     * 工程报告 撤销 请求
     * @param progressReviewProjectCommand
     * @return
     */
    Boolean engineeringReportCreateBack(ProgressReviewProjectCommand progressReviewProjectCommand);

    /**
     * epc项目经理 撤销 请求
     * @param progressReviewProjectCommand
     * @return
     */
    Boolean engineeringReportEPCBack(ProgressReviewProjectCommand progressReviewProjectCommand);

    /**
     * 工程报告保存草稿与发布
     *
     * @param engineeringSaveAndDraft
     * @return
     */
    EngineeringReportOneQuery engineeringMonthWeekSaveDraftAndRelease(EngineeringWeekMonthReportSave engineeringSaveAndDraft);

    /**
    *  工程周报未发布待办
    * @param
    * @return java.lang.Boolean
    * @date 2022/12/7 9:04
    */
    Boolean engineeringWeekReportNews();

    /**
    * 工程月报未发布待办
    * @param
    * @return java.lang.Boolean
    * @date 2022/12/7 10:25
    */
    Boolean engineeringReportNews();

    /**
     * 待办已处理
     * @param id
     * @return
     */
    void handleTask(Long id);
}
